package com.biosimilarity.example.report;
import com.biosimilarity.example.report.Absyn.*;
/*** BNFC-Generated Visitor Design Pattern Skeleton. ***/
/* This implements the common visitor design pattern.
   Tests show it to be slightly less efficient than the
   instanceof method, but easier to use. 
   Replace the R and A parameters with the desired return
   and context types.*/

public class VisitSkel
{
  public class ReportVisitor<R,A> implements Report.Visitor<R,A>
  {
    public R visit(com.biosimilarity.example.report.Absyn.Application p, A arg)
    {
      /* Code For Application Goes Here */

      p.report_1.accept(new ReportVisitor<R,A>(), arg);
      p.report_2.accept(new ReportVisitor<R,A>(), arg);

      return null;
    }
    public R visit(com.biosimilarity.example.report.Absyn.Dependency p, A arg)
    {
      /* Code For Dependency Goes Here */

      p.formals_.accept(new FormalsVisitor<R,A>(), arg);
      p.report_.accept(new ReportVisitor<R,A>(), arg);

      return null;
    }
    public R visit(com.biosimilarity.example.report.Absyn.Aggregation p, A arg)
    {
      /* Code For Aggregation Goes Here */

      for (Report x : p.listreport_) {
      }

      return null;
    }
    public R visit(com.biosimilarity.example.report.Absyn.Atomic p, A arg)
    {
      /* Code For Atomic Goes Here */

      p.reportid_.accept(new ReportIdVisitor<R,A>(), arg);
      for (Question x : p.listquestion_) {
      }

      return null;
    }

  }
  public class FormalsVisitor<R,A> implements Formals.Visitor<R,A>
  {
    public R visit(com.biosimilarity.example.report.Absyn.Parameters p, A arg)
    {
      /* Code For Parameters Goes Here */

      for (ReportId x : p.listreportid_) {
      }

      return null;
    }

  }
  public class ReportIdVisitor<R,A> implements ReportId.Visitor<R,A>
  {
    public R visit(com.biosimilarity.example.report.Absyn.Variable p, A arg)
    {
      /* Code For Variable Goes Here */

      //p.ident_;

      return null;
    }

  }
  public class QuestionVisitor<R,A> implements Question.Visitor<R,A>
  {
    public R visit(com.biosimilarity.example.report.Absyn.Query p, A arg)
    {
      /* Code For Query Goes Here */

      //p.ident_;

      return null;
    }

  }
}